package com.tjetc.controller;

import com.tjetc.entity.User;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.AbstractView;


import java.util.Map;

/**
 * 模型数据
 *
 * @author gaoyongxiang
 * @version v1.0
 * @date 2025/9/5
 */
@Controller
@RequestMapping("/model/")
public class _4ModelAndView {
    // 模型数据更多用于单体项目 我们后期使用前后端分离 几乎不用
    // 返回的数据只是json 不会是页面

    // 默认将数据放到Request域中
    @RequestMapping("request")
    public String f(User user, HttpServletRequest request) {
        System.out.println(user);
        //request.setAttribute("user", user);
        return "_4Model";
    }

    // 默认将数据map放到Request域中
    @RequestMapping("map")
    public String f1(User user, Map<String, Object> map) {
        map.put("key", "value");
        return "_4Model";
    }


    // 默认将数据map放到Request域中 推荐这个
    @RequestMapping("modelandview")
    public ModelAndView f2() {
        ModelAndView modelAndView = new ModelAndView();
        // 往域对象中存放数据 request
        modelAndView.addObject("key", "value");
        // 设置跳转的页面 转发
        modelAndView.setViewName("_4Model");
        return modelAndView;
    }

    // 在执行当前的Controller中的方法之前 都会执行此方法
    @ModelAttribute
    public void prepare(){
        System.out.println("准备工作");
    }

}